/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ComExWeb.dominio;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



/**
 *
 * @author 
 */
@Entity
@Table(schema="desenv",name = "ENDERECO")
@NamedQueries({
    @NamedQuery(name = "Endereco.findAll", query = "SELECT e FROM Endereco e")})
public class Endereco implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_ENDERECO")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idEndereco;
    @Column(name = "DS_LOGRADOURO")
    private String dsLogradouro;
    @Column(name = "DS_CEP")
    private String dsCep;
    @Column(name = "DS_NUMERO")
    @NotEmpty(message="Nome não informado")
    private String dsNumero;
    @Column(name = "DS_COMPLEMENTO")
    private String dsComplemento;
    @Column(name = "DT_CADASTRO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtCadastro;
    @Column(name = "DS_ESTADO")
    private String dsEstado;
    @Column(name = "DS_CIDADE")
    private String dsCidade;
    @Column(name = "DS_BAIRRO")
    private String dsBairro;
    @JoinColumn(name = "TIPO_ENDERECO", referencedColumnName = "ID_TIPO_ENDERECO")
    @ManyToOne(optional = false)
   // @NotNull(message="Tipo de endereço não informada")
    private TipoEndereco tipoEndereco;
    @JoinColumn(name = "PESSOA", referencedColumnName = "ID_PESSOA")
    @ManyToOne(optional = false)
    private Pessoa pessoa;


    public Endereco() {
    }

    public Endereco(String dsLogradouro, String dsCep, String dsNumero, String dsComplemento, Date dtCadastro, String dsCidade, String dsBairro, TipoEndereco tipoEndereco) {
        this.dsLogradouro = dsLogradouro;
        this.dsCep = dsCep;
        this.dsNumero = dsNumero;
        this.dsComplemento = dsComplemento;
        this.dtCadastro = dtCadastro;
        this.dsCidade = dsCidade;
        this.dsBairro = dsBairro;
        this.tipoEndereco = tipoEndereco;
    }
    

    public Endereco(Long idEndereco) {
        this.idEndereco = idEndereco;
    }

    public Long getIdEndereco() {
        return idEndereco;
    }

    public void setIdEndereco(Long idEndereco) {
        this.idEndereco = idEndereco;
    }


    private static final Logger log = LoggerFactory.getLogger(Endereco.class);

    @Override
    public int hashCode() {



        int hash = 0;
        hash += (idEndereco != null ? idEndereco.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        // TODO: Warning - this method won't work in the case the id fields are not set
        boolean resultado;
        if (!(object instanceof Endereco)) {
            resultado = false;
        } else {
            Endereco other = (Endereco) object;
            if ((this.idEndereco == null && other.idEndereco != null) || (this.idEndereco != null && !this.idEndereco.equals(other.idEndereco))) {
                resultado = false;
            } else {
                resultado = true;
            }
        }


        return resultado;

    }

    public String getDsBairro() {
        return dsBairro;
    }

    public void setDsBairro(String dsBairro) {
        this.dsBairro = dsBairro;
    }

    public String getDsCep() {
        return dsCep;
    }

    public void setDsCep(String dsCep) {
        this.dsCep = dsCep;
    }

    public String getDsCidade() {
        return dsCidade;
    }

    public void setDsCidade(String dsCidade) {
        this.dsCidade = dsCidade;
    }

    public String getDsComplemento() {
        return dsComplemento;
    }

    public void setDsComplemento(String dsComplemento) {
        this.dsComplemento = dsComplemento;
    }

    public String getDsEstado() {
        return dsEstado;
    }

    public void setDsEstado(String dsEstado) {
        this.dsEstado = dsEstado;
    }

    public String getDsLogradouro() {
        return dsLogradouro;
    }

    public void setDsLogradouro(String dsLogradouro) {
        this.dsLogradouro = dsLogradouro;
    }

    public String getDsNumero() {
        return dsNumero;
    }

    public void setDsNumero(String dsNumero) {
        this.dsNumero = dsNumero;
    }

    public Date getDtCadastro() {
        return dtCadastro;
    }

    public void setDtCadastro(Date dtCadastro) {
        this.dtCadastro = dtCadastro;
    }



    public TipoEndereco getTipoEndereco() {
        return tipoEndereco;
    }

    public void setTipoEndereco(TipoEndereco tipoEndereco) {
        this.tipoEndereco = tipoEndereco;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }


}
